<?php

/**
 * Базовый класс режимов запуска приложения.
 *
 */
abstract class Kernel_Mode_Abstract {

    /**
     * Возвращает объект запроса.
     *
     * @return  Kernel_Request_Interface
     */
    abstract public function getRequest();

    /**
     * Возвращает объект ответа.
     *
     * @return  Kernel_Response_Abstract
     */
    abstract public function getResponse();

    /**
     * Возвращает реализацию фронт-контроллера для данного режима.
     *
     * @return  Kernel_Filter_FrontController_Abstract
     */
    public function getFrontController() {
        return new Kernel_Filter_FrontController_Regular();
    }

    /**
     * Запускает модуль.
     *
     * @param   Kernel_Module $module
     */
    abstract public function forward(Kernel_Module $module);
}
